package puj.promobil.prometer.dto;

import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import com.j256.ormlite.dao.ForeignCollection;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.ForeignCollectionField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable
public class Producto implements Serializable{
	
	//0: descargado, 1:En preceso, 2:sincronizado
	public static final int ESTADO_DESCARGADO = 0;
	public static final int ESTADO_EN_PROCESO = 1;
	public static final int ESTADO_SINCRONIZADO = 2;
	
	public static final int ACCION_ADICION=1;
	public static final int ACCION_RETIRO=2;
	public static final int ACCION_MODIFICAICON=3;

	
	@DatabaseField (foreign=true, foreignAutoRefresh=true)
	private Empresa empresa;
	
	
	
	@DatabaseField(generatedId = true)
	private int id;
		
	@DatabaseField private Date fechasyn;
	@DatabaseField private int estadosyn;
	@DatabaseField private int accion;
	@DatabaseField private String gtin;
	@DatabaseField private String tipocodigo;
	@DatabaseField private String codinterno;
	@DatabaseField private String desclarga;
	@DatabaseField private String gtincontenido;
	@DatabaseField private String pais;
	@DatabaseField private String clasproveedor;
	@DatabaseField private int calattalla;
	@DatabaseField private int talla;
	@DatabaseField private String marca;
	@DatabaseField private String calmarca;
	@DatabaseField private String color;
	@DatabaseField private int calcolor;
	@DatabaseField private int idunidadconsumo;
	@DatabaseField private int idunidaddespacho;
	@DatabaseField private int idunidadcomercio;
	@DatabaseField private float alto;
	@DatabaseField private String calunidad;
	@DatabaseField private float ancho;
	@DatabaseField private String calancho;
	@DatabaseField private float profundidad;
	@DatabaseField private String calprofundidad;
	@DatabaseField private float pesoneto;
	@DatabaseField private String calpesoneto;
	@DatabaseField private float pesobruto;
	@DatabaseField private String calpesobruto;
	@DatabaseField private float iva;
	@DatabaseField private float tara;
	@DatabaseField private int unidempaquesup;
	@DatabaseField private String unidmedidaemp;
	@DatabaseField private float preciobruto;
	@DatabaseField private String monedabruto;
	@DatabaseField private float porcdescuento;
	@DatabaseField private String tipempaque;
	@DatabaseField private String estproducto;
	@DatabaseField private int numtendidos;
	@DatabaseField private int numunidxtendido;
	@DatabaseField private String descorta;
	@DatabaseField private String regsanitario;
	@DatabaseField private Date fechafinregsanitario;
	@DatabaseField private Date fechainiprecio;
	@DatabaseField private Date fechafinprecio;
	@DatabaseField private String fabricante;
	@DatabaseField private float temperatura;
	@DatabaseField private float temperaturamin;
	@DatabaseField private float temperaturamax;
	@DatabaseField private String catcabas;
	@DatabaseField private float volumen;
	@DatabaseField private String calvolumen;
	@DatabaseField private int maxunidapilables;
	@DatabaseField private String calunidapilables;
	@DatabaseField private String calcantcont;
	@DatabaseField private int cantcontenvase;
	@DatabaseField private String calcantcontenvase;
	@DatabaseField private int nopiezas;
	@DatabaseField private int fechaleadtime;
	@DatabaseField private int calfechaleadtime;
	@DatabaseField private float precioneto;
	@DatabaseField private String monedaneto;
	@DatabaseField private Date fechainivaldescuento;
	@DatabaseField private String calfechainivaldescuento;
	@DatabaseField private Date fechafinvaldescuento;
	@DatabaseField private String calfechafinvaldescuento;
	@DatabaseField private String nombreproducto;
	@DatabaseField private String sabor;
	@DatabaseField private String fragancia;
	@DatabaseField private String material;
	@DatabaseField private String voltaje;
	@DatabaseField private int blisters;
	@DatabaseField private int nivempaque;
	@DatabaseField private String nutricional;
	
	@DatabaseField(dataType = DataType.BYTE_ARRAY) private byte[] imagen;
	
	
	@ForeignCollectionField
	private ForeignCollection<Imagen> imagenes;
	
	public Producto() {

	}

	public Producto(int id, String gtin, String desclarga) {
		this.id = id;
		this.gtin = gtin;
		this.desclarga = desclarga;
		this.nombreproducto = desclarga;
		
		//agregarImagen();
		
		

	}
	
	public void agregarImagen()
	{
		  String myJpgPath = "/mnt/sdcard/Pictures/Screenshots/Foto.jpg";
		  BitmapFactory.Options options = new BitmapFactory.Options();
		  options.inSampleSize = 2;
		  Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
		  byte[] imageByteData = convertBitMapToByteArray(bm); 
		  imagen= imageByteData;
	}
	
	 public static byte[] convertBitMapToByteArray(Bitmap imageBitmap) 
	 	{
	 	    ByteArrayOutputStream stream = new ByteArrayOutputStream();
	 	    imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
	 	    byte[] imageByteData = stream.toByteArray();
	 	    return imageByteData;
	 	}
	
	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	

	public int getAccion() {
		return accion;
	}

	public void setAccion(int accion) {
		this.accion = accion;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getGtin() {
		return gtin;
	}

	public void setGtin(String gtin) {
		this.gtin = gtin;
	}

	public String getTipocodigo() {
		return tipocodigo;
	}

	public void setTipocodigo(String tipocodigo) {
		this.tipocodigo = tipocodigo;
	}

	public String getCodinterno() {
		return codinterno;
	}

	public void setCodinterno(String codinterno) {
		this.codinterno = codinterno;
	}

	public String getDesclarga() {
		return desclarga;
	}

	public void setDesclarga(String desclarga) {
		this.desclarga = desclarga;
	}

	public String getGtincontenido() {
		return gtincontenido;
	}

	public void setGtincontenido(String gtincontenido) {
		this.gtincontenido = gtincontenido;
	}

	public String getPais() {
		return pais;
	}

	public void setPais(String pais) {
		this.pais = pais;
	}

	public String getClasproveedor() {
		return clasproveedor;
	}

	public void setClasproveedor(String clasproveedor) {
		this.clasproveedor = clasproveedor;
	}

	public int getCalattalla() {
		return calattalla;
	}

	public void setCalattalla(int calattalla) {
		this.calattalla = calattalla;
	}

	public int getTalla() {
		return talla;
	}

	public void setTalla(int talla) {
		this.talla = talla;
	}

	public String getMarca() {
		return marca;
	}

	public void setMarca(String marca) {
		this.marca = marca;
	}

	public String getCalmarca() {
		return calmarca;
	}

	public void setCalmarca(String calmarca) {
		this.calmarca = calmarca;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public int getCalcolor() {
		return calcolor;
	}

	public void setCalcolor(int calcolor) {
		this.calcolor = calcolor;
	}

	public int getIdunidadconsumo() {
		return idunidadconsumo;
	}

	public void setIdunidadconsumo(int idunidadconsumo) {
		this.idunidadconsumo = idunidadconsumo;
	}

	public int getIdunidaddespacho() {
		return idunidaddespacho;
	}

	public void setIdunidaddespacho(int idunidaddespacho) {
		this.idunidaddespacho = idunidaddespacho;
	}

	public int getIdunidadcomercio() {
		return idunidadcomercio;
	}

	public void setIdunidadcomercio(int idunidadcomercio) {
		this.idunidadcomercio = idunidadcomercio;
	}

	public float getAlto() {
		return alto;
	}

	public void setAlto(float alto) {
		this.alto = alto;
	}

	public String getCalunidad() {
		return calunidad;
	}

	public void setCalunidad(String calunidad) {
		this.calunidad = calunidad;
	}

	public float getAncho() {
		return ancho;
	}

	public void setAncho(float ancho) {
		this.ancho = ancho;
	}

	public String getCalancho() {
		return calancho;
	}

	public void setCalancho(String calancho) {
		this.calancho = calancho;
	}

	public float getProfundidad() {
		return profundidad;
	}

	public void setProfundidad(float profundidad) {
		this.profundidad = profundidad;
	}

	public String getCalprofundidad() {
		return calprofundidad;
	}

	public void setCalprofundidad(String calprofundidad) {
		this.calprofundidad = calprofundidad;
	}

	public float getPesoneto() {
		return pesoneto;
	}

	public void setPesoneto(float pesoneto) {
		this.pesoneto = pesoneto;
	}

	public String getCalpesoneto() {
		return calpesoneto;
	}

	public void setCalpesoneto(String calpesoneto) {
		this.calpesoneto = calpesoneto;
	}

	public float getIva() {
		return iva;
	}

	public void setIva(float iva) {
		this.iva = iva;
	}

	public float getTara() {
		return tara;
	}

	public void setTara(float tara) {
		this.tara = tara;
	}

	public int getUnidempaquesup() {
		return unidempaquesup;
	}

	public void setUnidempaquesup(int unidempaquesup) {
		this.unidempaquesup = unidempaquesup;
	}

	public String getUnidmedidaemp() {
		return unidmedidaemp;
	}

	public void setUnidmedidaemp(String unidmedidaemp) {
		this.unidmedidaemp = unidmedidaemp;
	}

	public float getPreciobruto() {
		return preciobruto;
	}

	public void setPreciobruto(float preciobruto) {
		this.preciobruto = preciobruto;
	}

	public String getMonedabruto() {
		return monedabruto;
	}

	public void setMonedabruto(String monedabruto) {
		this.monedabruto = monedabruto;
	}

	public float getPorcdescuento() {
		return porcdescuento;
	}

	public void setPorcdescuento(float porcdescuento) {
		this.porcdescuento = porcdescuento;
	}

	public String getTipempaque() {
		return tipempaque;
	}

	public void setTipempaque(String tipempaque) {
		this.tipempaque = tipempaque;
	}

	public String getEstproducto() {
		return estproducto;
	}

	public void setEstproducto(String estproducto) {
		this.estproducto = estproducto;
	}

	public int getNumtendidos() {
		return numtendidos;
	}

	public void setNumtendidos(int numtendidos) {
		this.numtendidos = numtendidos;
	}

	public int getNumunidxtendido() {
		return numunidxtendido;
	}

	public void setNumunidxtendido(int numunidxtendido) {
		this.numunidxtendido = numunidxtendido;
	}

	public String getDescorta() {
		return descorta;
	}

	public void setDescorta(String descorta) {
		this.descorta = descorta;
	}

	public String getRegsanitario() {
		return regsanitario;
	}

	public void setRegsanitario(String regsanitario) {
		this.regsanitario = regsanitario;
	}

	public Date getFechafinregsanitario() {
		return fechafinregsanitario;
	}

	public void setFechafinregsanitario(Date fechafinregsanitario) {
		this.fechafinregsanitario = fechafinregsanitario;
	}

	public Date getFechainiprecio() {
		return fechainiprecio;
	}

	public void setFechainiprecio(Date fechainiprecio) {
		this.fechainiprecio = fechainiprecio;
	}

	public Date getFechafinprecio() {
		return fechafinprecio;
	}

	public void setFechafinprecio(Date fechafinprecio) {
		this.fechafinprecio = fechafinprecio;
	}

	public String getFabricante() {
		return fabricante;
	}

	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}

	public float getTemperatura() {
		return temperatura;
	}

	public void setTemperatura(float temperatura) {
		this.temperatura = temperatura;
	}

	public String getCatcabas() {
		return catcabas;
	}

	public void setCatcabas(String catcabas) {
		this.catcabas = catcabas;
	}

	public float getPesobruto() {
		return pesobruto;
	}

	public void setPesobruto(float pesobruto) {
		this.pesobruto = pesobruto;
	}

	public String getCalpesobruto() {
		return calpesobruto;
	}

	public void setCalpesobruto(String calpesobruto) {
		this.calpesobruto = calpesobruto;
	}

	public float getVolumen() {
		return volumen;
	}

	public void setVolumen(float volumen) {
		this.volumen = volumen;
	}

	public String getCalvolumen() {
		return calvolumen;
	}

	public void setCalvolumen(String calvolumen) {
		this.calvolumen = calvolumen;
	}

	public int getMaxunidapilables() {
		return maxunidapilables;
	}

	public void setMaxunidapilables(int maxunidapilables) {
		this.maxunidapilables = maxunidapilables;
	}

	public String getCalunidapilables() {
		return calunidapilables;
	}

	public void setCalunidapilables(String calunidapilables) {
		this.calunidapilables = calunidapilables;
	}

	public String getCalcantcont() {
		return calcantcont;
	}

	public void setCalcantcont(String calcantcont) {
		this.calcantcont = calcantcont;
	}

	public int getCantcontenvase() {
		return cantcontenvase;
	}

	public void setCantcontenvase(int cantcontenvase) {
		this.cantcontenvase = cantcontenvase;
	}

	public String getCalcantcontenvase() {
		return calcantcontenvase;
	}

	public void setCalcantcontenvase(String calcantcontenvase) {
		this.calcantcontenvase = calcantcontenvase;
	}

	public int getNopiezas() {
		return nopiezas;
	}

	public void setNopiezas(int nopiezas) {
		this.nopiezas = nopiezas;
	}

	public int getFechaleadtime() {
		return fechaleadtime;
	}

	public void setFechaleadtime(int fechaleadtime) {
		this.fechaleadtime = fechaleadtime;
	}

	public int getCalfechaleadtime() {
		return calfechaleadtime;
	}

	public void setCalfechaleadtime(int calfechaleadtime) {
		this.calfechaleadtime = calfechaleadtime;
	}

	public float getPrecioneto() {
		return precioneto;
	}

	public void setPrecioneto(float precioneto) {
		this.precioneto = precioneto;
	}

	public String getMonedaneto() {
		return monedaneto;
	}

	public void setMonedaneto(String monedaneto) {
		this.monedaneto = monedaneto;
	}

	public Date getFechainivaldescuento() {
		return fechainivaldescuento;
	}

	public void setFechainivaldescuento(Date fechainivaldescuento) {
		this.fechainivaldescuento = fechainivaldescuento;
	}

	public String getCalfechainivaldescuento() {
		return calfechainivaldescuento;
	}

	public void setCalfechainivaldescuento(String calfechainivaldescuento) {
		this.calfechainivaldescuento = calfechainivaldescuento;
	}

	public Date getFechafinvaldescuento() {
		return fechafinvaldescuento;
	}

	public void setFechafinvaldescuento(Date fechafinvaldescuento) {
		this.fechafinvaldescuento = fechafinvaldescuento;
	}

	public String getCalfechafinvaldescuento() {
		return calfechafinvaldescuento;
	}

	public void setCalfechafinvaldescuento(String calfechafinvaldescuento) {
		this.calfechafinvaldescuento = calfechafinvaldescuento;
	}

	public int getEstadosyn() {
		return estadosyn;
	}

	public void setEstadosyn(int estadosyn) {
		this.estadosyn = estadosyn;
	}

	public Date getFechasyn() {
		return fechasyn;
	}

	public void setFechasyn(Date fechasyn) {
		this.fechasyn = fechasyn;
	}

	public float getTemperaturamin() {
		return temperaturamin;
	}

	public void setTemperaturamin(float temperaturamin) {
		this.temperaturamin = temperaturamin;
	}

	public float getTemperaturamax() {
		return temperaturamax;
	}

	public void setTemperaturamax(float temperaturamax) {
		this.temperaturamax = temperaturamax;
	}

	public String getNombreproducto() {
		return nombreproducto;
	}

	public void setNombreproducto(String nombreproducto) {
		this.nombreproducto = nombreproducto;
	}

	public String getSabor() {
		return sabor;
	}

	public void setSabor(String sabor) {
		this.sabor = sabor;
	}

	public String getFragancia() {
		return fragancia;
	}

	public void setFragancia(String fragancia) {
		this.fragancia = fragancia;
	}

	public String getMaterial() {
		return material;
	}

	public void setMaterial(String material) {
		this.material = material;
	}

	public String getVoltaje() {
		return voltaje;
	}

	public void setVoltaje(String voltaje) {
		this.voltaje = voltaje;
	}

	public int getBlisters() {
		return blisters;
	}

	public void setBlisters(int blisters) {
		this.blisters = blisters;
	}

	public int getNivempaque() {
		return nivempaque;
	}

	public void setNivempaque(int nivempaque) {
		this.nivempaque = nivempaque;
	}

	public String getNutricional() {
		return nutricional;
	}

	public void setNutricional(String nutricional) {
		this.nutricional = nutricional;
	}
	
	public byte[] getImagen() {
		return imagen;
	}

	public void setImagen(byte[] imagen) {
		this.imagen = imagen;
	}

	
	public List<Imagen> getImagenes() {
		ArrayList<Imagen> resp = new ArrayList<Imagen>();

		
		for (Imagen val : imagenes) {
			resp.add(val);
		}

		return resp;
	}

	public void setImagenes(ForeignCollection<Imagen> imagenes) {
		this.imagenes = imagenes;
	}


}
